home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-01-11 | 145.1 KB | 4,706 lines |
-
-
-
-
-
-
-
-
-
- MMMMiiiiccccrrrroooossssoooofffftttt NNNNeeeettttwwwwoooorrrrkkkkssss
-
- SSSSMMMMBBBB FFFFIIIILLLLEEEE SSSSHHHHAAAARRRRIIIINNNNGGGG PPPPRRRROOOOTTTTOOOOCCCCOOOOLLLL EEEEXXXXTTTTEEEENNNNSSSSIIIIOOOONNNNSSSS
-
-
- SSSSMMMMBBBB FFFFiiiilllleeee SSSShhhhaaaarrrriiiinnnngggg PPPPrrrroooottttooooccccoooollll EEEExxxxtttteeeennnnssssiiiioooonnnnssss VVVVeeeerrrrssssiiiioooonnnn 3333....0000
-
-
-
- DDDDooooccccuuuummmmeeeennnntttt VVVVeeeerrrrssssiiiioooonnnn 1111....00009999
-
-
-
-
-
-
- NNNNoooovvvveeeemmmmbbbbeeeerrrr 22229999,,,, 1111999988889999
-
-
- Microsoft Corporation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 2 - November 29, 1989
-
-
- _1. _I_N_T_R_O_D_U_C_T_I_O_N
-
- This document defines extensions to the LANMAN 1.0 Microsoft
- file sharing protocol as defined in the SMB File Sharing
- Protocol Extension version 2.0 , document version 3.2, and
- the OenNet/Microsoft Networks File Sharing Protocol (Intel
- PN 136329-001) (sometimes referred to as the "core" proto-
- col). These extensions are primarily to provide support for
- Operating Systems which use installable file systems. The
- support for installable file systems require that extended
- attribute data blocks, of potentially greater size than a
- negotiated buffer, are supplied with requests that could be
- transported in a negotiated buffer in the LANMAN 1.0 enviro-
- ment. The extended file sharing protocol is not intended to
- be specific to OS/2. It is anticipated that other Operating
- Systems will have many similar requirements and that they
- will use the same services and protocols to meet them.
-
- This extension, when combined with the LANMAN 1.0 and core
- protocol, allows all file oriented OS/2 version 1.2 func-
- tions to be performed on remote files using LANMAN 1.2.
-
- The extended protocol defined in this document is selected
- by the dialect string "LANMAN1.2" in the core protocol nego-
- tiate request.
-
- Acronyms used include:
-
-
- VC - Virtual Circuit. A transport level connection (some-
- times called a session) between two networked machines
- (nodes).
-
- TID - Tree Identifier. A token representing an instance of
- authenticated use of a network resource (often a shared
- subdirectory tree structure).
-
- UID - User Identifier. A token representing an authenti-
- cated user of a network resource.
-
- PID - Process Identifier. A number which uniquely identi-
- fies a process on a node.
-
- MID - Multiplex Identifier. A number which uniquely iden-
- tifies a protocol request and response within a pro-
- cess.
-
- FID - File Identifier. A number which identifies an
- instance of an open file ( sometimes called file han-
- dle).
-
- T.B.D.- To Be Defined. Further detail will be provided at a
- later time.
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 3 - November 29, 1989
-
-
- MBZ - Must Be Zero. All reserved fields must be set to
- zero by the consumer.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 4 - November 29, 1989
-
-
- _2. _M_E_S_S_A_G_E _F_O_R_M_A_T
-
- All messages sent while using the extended protocol (both
- the core messages used and the additional messages defined
- in this document) will have the following format.
-
- BYTE smb_idf[4]; /* contains 0xFF,'SMB' */
- BYTE smb_com; /* command code */
- BYTE smb_rcls; /* error class */
- BYTE smb_reh; /* reserved for future */
- WORD smb_err; /* error code */
- BYTE smb_flg; /* flags */
- WORD smb_flg2; /* flags */
- WORD smb_res[6]; /* reserved for future */
- WORD smb_tid; /* authenticated resource identifier */
- WORD smb_pid; /* caller's process id */
- WORD smb_uid; /* authenticated user id */
- WORD smb_mid; /* multiplex id */
- BYTE smb_wct; /* count of 16-bit words that follow */
- WORD smb_vwv[]; /* variable number of 16-bit words */
- WORD smb_bcc; /* count of bytes that follow */
- BYTE smb_buf[]; /* variable number of bytes */
-
-
- The structure defined from smb_idf through smb_wct is the
- fixed portion of the SMB structure sometimes referred to as
- the SMB header. Following the header there is a variable
- number of words (defined by smb_wct) and following that is
- smb_bcc which defines an additional variable number of
- bytes.
-
-
- A BYTE is 8 bits.
- A WORD is two BYTEs.
- The BYTEs within a WORD are ordered such that the low BYTE precedes the high
- BYTE.
- A DWORD is two WORDs.
- The WORDs within a DWORD are ordered such that the low WORD precedes the
- high WORD.
-
-
- smb_com: - command code.
-
- smb_rcls: - error class (see below).
-
- smb_ret: - error returned (see below).
-
- smb_tid: - Used by the server to identify a resource (e.g.,
- a disk sub-tree). (see below)
-
- smb_pid: - caller's process id. Generated by the consumer
- (redirector) to uniquely identify a process within the
- consumer's system. A response message will always con-
- tain the same value in smb_pid (and smb_mid) as in the
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 5 - November 29, 1989
-
-
- corresponding request message.
-
- smb_mid: - this field is used for multiplexing multiple mes-
- sages on a single Virtual Circuit (VC) normally when
- multiple requests are from the same process. The PID
- (in smb_pid) and the MID (in smb_mid) uniquely identify
- a request and are used by the consumer to correlate
- incoming responses to previously sent requests.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 6 - November 29, 1989
-
-
- _3. _N_O_T_E_S:
-
- 1. smb_flg can have the following values:
-
- bit0 - When set (returned) from the server in the Negotiate
- response protocol, this bit indicates that the server
- supports the "sub dialect" consisting of the Lockan-
- dRead and WriteandUnlock protocols defined in the SMB
- File Sharing Protocol Extension version 2.0 , document
- version 3.2
-
-
- bit1 - When on (on a protocol request being sent to the
- server), the consumer guarantees that there is a
- receive buffer posted such that a "Send.No.Ack" can be
- used by the server to respond to the consumer's
- request. The LANMAN 1.2 Redirector for OS/2 will not
- set this bit.
-
-
- bit2 - Reserved (must be zero).
-
-
-
- bit3 - When on, all pathnames in the protocol must be
- treated as caseless. When off, the pathnames are case
- sensitive. This allows forwarding of the protocol mes-
- sage on various extended VCs where caseless may not be
- the norm. The LANMAN 1.2 Redirector for OS/2 will
- always have this bit on to indicate caseless pathnames.
-
-
- bit4 - When on (on the Session Setup and X protocol defined
- later in this document), all paths sent to the server
- by the consumer are already in the canonicalized format
- used by OS/2. This means that file/directory names are
- in upper case, are valid characters and backslashes are
- used as seperators.
-
-
- bit5 - When on (on core protocols Open, Create and Make
- New), this indicates that the consumer is requesting
- that the file be "opportunisticaly" locked if this pro-
- cess is the only process which has the file open at the
- time of the open request. If the server "grants" this
- oplock request, then this bit should remain set in the
- coresponding response protocol to indicate to the con-
- sumer that the oplock request was granted. See the dis-
- cussion of "oplock" in the sections defining the "Open
- and X" and "Locking and X" protocols later in this
- document (this bit has the same function as bit 1 of
- smb_flags of the "Open and X" protocol).
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 7 - November 29, 1989
-
-
- bit6 - When on (on core protocols Open, Create and Make
- New), this indicates that the server should notify the
- consumer on any action which can modify the file
- (delete, setattrib, rename, etc.). If not set, the
- server need only notify the consumer on another open
- request. See the discussion of "oplock" in the sec-
- tions defining the "Open and X" and "Locking and X"
- protocols later in this document (this bit has the same
- function as bit 2 of smb_flags of the "Open and X" pro-
- tocol).
-
-
- bit7 - When on, this protocol is being sent from the server
- in response to a consumer request. The smb_com (com-
- mand) field usually contains the same value in a proto-
- col request from the consumer to the server as in the
- matching response from the server to the consumer.
- This bit unambiguously distinguishes the command
- request from the command response. On a multiplexed VC
- on a node where both server and consumer are active,
- this bit can be used by the node's SMB delivery system
- to help identify whether this protocol should be routed
- to a waiting consumer process or to the server.
-
-
- 2. smb_flg2 can have the following values:
-
-
- bit0 - When set by the consumer, the running application
- understands OS/2 1.2 style file names.
-
-
- bit1 - When set by the consumer, the running application
- understands extended attributes.
-
-
- bit2 through bit15 - Reserved (MBZ).
-
-
- 3. smb_uid is the user identifier. It is used by the LAN-
- MAN 1.0 extended protocol when the server is executing
- in "user level security mode" to validate access on
- protocols which reference symbolicly named resources
- (such as file open). Thus differing users accessing
- the same TID may be granted differing access to the
- resources defined by the TID based on smb_uid. The UID
- is returned by the server via the Session Set Up proto-
- col. This UID must be used in all SMB's following Ses-
- sion Set Up And X.
-
-
- 4. In the LANMAN 1.2 extended protocol environment the TID
- represents an instance of an authenticated use. This
- is the result of a successful NET USE to a server using
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 8 - November 29, 1989
-
-
- a valid netname and password (if any).
-
- If the server is executing in a "share level security
- mode", the tid is the only thing used to allow access
- to the shared resource. Thus if the user is able to
- perform a successful NET USE to the server specifying
- the appropriate netname and passwd (if any) the
- resource may be accessed according to the access rights
- associated with the shared resource (same for all who
- gained access this way).
-
- If however the server is executing in "user level secu-
- rity mode", access to the resource is based on the UID
- (validated on the Session Setup protocol) and the TID
- is NOT associated with access control but rather merely
- defines the resource (such as the shared directory
- tree).
-
- In most SMB protocols, smb_tid must contain a valid
- TID. Exceptions include prior to getting a TID esta-
- blished including NEGOTIATE, TREE CONNECT,
- SESS_SETUPandX and TREE_CONNandX protocols. Other
- exceptions include QUERY_SRV_INFO some forms of the
- TRANSACTION protocol and ECHO. A NULL TID is defined
- as 0xFFFF. The server is responsible for enforcing use
- of a valid TID where appropriate.
-
-
- 5. As in the core, smb_pid uniquely identifies a consumer
- process. Consumers inform servers of the creation of a
- new process by simply introducing a new smb_pid value
- into the dialogue (for new processes).
-
- In the core protocol however, the "Process Exit" proto-
- col was used to indicate the catastrophic termination
- of a process (or session). In the single tasking DOS
- system, it was possible for hard errors to occur caus-
- ing the destruction of the process with files remaining
- open. Thus a Process Exit protocol was used for this
- occurrence to allow the server to close all files
- opened by that process.
-
- In the LANMAN 1.2 extended protocol, no "Process Exit"
- protocol will be sent. The operating system will
- ensure that the "close Protocol" will be sent when the
- last process referencing the file closes it. From the
- server's point of view, there is no concept of FIDs
- "belonging to" processes. A FID returned by the server
- to one process may be used by any other process using
- the same VC and TID. There is no "birth announcement"
- (no "fork" protocol) sent to the server. It is up to
- the consumer to ensure only valid processes gain access
- to FIDs (and TIDs). On TREE DISCONNECT (or when the VC
- environment is terminated) the server may invalidate
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 9 - November 29, 1989
-
-
- any files opened by any process within the VC environ-
- ment using that TID.
-
-
- 6. Systems using the LANMAN 1.2 extended protocol will
- typically be multi-tasked and will allow multiple asyn-
- chronous input/output requests per task. Therefore a
- multiplex ID (smb_mid) is used (along with smb_pid) to
- allow multiplexing the single consumer/server VC among
- the consumer's multiple processes, threads and requests
- per thread.
-
- The consumer is responsible for ensuring that every
- request includes a value in the smb_mid field which
- will allow the response to be associated with the
- correct request (at least the smb_pid and smb_mid must
- uniquely identify the request/response relationship
- system wide).
-
- The server is responsible for ensuring that every
- response contains the same smb_mid value (and smb_pid
- value) as its request. The consumer may then use the
- smb_mid value (along with smb_pid value) for associat-
- ing requests and responses and may have up to the nego-
- tiated number of requests outstanding at any time on a
- multiplexed file server VC.
-
-
- 7. The LANMAN 1.2 extended protocol enhances the semantics
- of the pathname.
-
- Two special pathname component values -- "." and ".."
- -- must be recognized. There may be multiple of these
- components in a path name. They have the standard
- meanings -- "." points to its own directory, ".."
- points to its directory's parent.
-
- Note that it is the server's responsibility to ensure
- that the ".." can not be used to gain access to
- files/directories above the "virtual root" as defined
- by the Tree Connect (TID).
-
-
- 8. The new LANMAN 1.2 extended protocol requests and
- responses are variable length (as was true in "core").
- Thus additional words may be added in the smb_vwv[]
- area in the future as well as additional bytes added
- within the smb_buf[] area. Servers must be implemented
- such that additional fields in either of these areas
- will not cause the command to fail. If additional
- fields are encountered which are not recognized by the
- server's level of SMB implementation, they should be
- ignored. This allows for future upgrade of the protocol
- and eliminates the need for "reserved fields".
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 10 - November 29, 1989
-
-
- 9. The contents of response parameters is not guaranteed
- in the case of an error return (any protocol response
- with an error set in the SMB header may have smb_wct of
- zero and smb_bcc count of zero).
-
-
- 10. When LANMAN 1.2 extended protocol has been negotiated,
- the ERRDOS error class has been expanded to include all
- errors which may be generated by the OS/2 operating
- system. As such, the error code values defined for
- error class ERRDOS in this document are a subset of the
- possible error values. See the OS/2 operating system
- documentation for the complete set of possible OS/2
- (ERRDOS) error codes.
-
-
-
- These semantic changes apply to all "core" requests used by
- the extended protocol. Where there are additional changes,
- they are documented with the new requests. The server hav-
- ing negotiated LANMAN 1.2 is expected to still support all
- LANMAN 1.0 and core protocol requests.
-
-
- The following are the core protocol requests which must
- still be supported in the LANMAN 1.2 extended protocol
- without change. See "File Sharing Protocol" Intel Part
- number 136329-001 for detailed explanation of each protocol
- request/response.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 11 - November 29, 1989
-
-
-
- TREE CONNECT
- TREE DISCONNECT
- OPEN FILE
- CREATE FILE
- CLOSE FILE
- FLUSH FILE
- READ
- WRITE
- SEEK
- CREATE DIRECTORY
- DELETE DIRECTORY
- DELETE FILE
- RENAME FILE
- GET FILE ATTRIBUTES
- SET FILE ATTRIBUTES
- LOCK RECORD
- UNLOCK RECORD
- CREATE TEMPORARY FILE (no longer used by LANMAN 1.2 Redirector)
- PROCESS EXIT (no longer used by LANMAN 1.2 Redirector)
- MAKE NEW FILE
- CHECK PATH
- GET SERVER ATTRIBUTES
- NEGOTIATE PROTOCOL (additional fields in response if LANMAN 1.2 negotiated)
- FILE SEARCH
- CREATE PRINT FILE
- CLOSE PRINT FILE
- WRITE PRINT FILE
- (core Message Commands are also supported)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 12 - November 29, 1989
-
-
- The following are the LANMAN 1.0 extended protocol requests
- which must still be supported in the LANMAN 1.2 extended
- protocol without change. See SMB File Sharing Protocol
- Extensions Version 2.0, doument version 3.2, for detailed
- explanation of each protocol request/response.
-
- SESS_SETUPandX (X is another valid protocol request e.g. TREE_CONNandX)
- TREE_CONNandX (X is another valid protocol request e.g. OPEN)
- OPENandX (X is another valid protocol request e.g. READ)
- READandX (X is another valid protocol request e.g. CLOSE)
- WRITEandX (X is another valid protocol request e.g. READ)
- FIND (matches OS/2 form of FILE SEARCH)
- FIND_UNIQUE (matches OS/2 form of FILE SEARCH)
- FIND_CLOSE (matches OS/2 form of FILE SEARCH)
- READ_BLOCK_RAW (read larger than negotiated buffer size request raw)
- READ_BLOCK_MPX (read larger than negotiated buffer size request multiplexed)
- WRITE_BLOCK_RAW (write larger than negotiated buffer size request raw)
- WRITE_BLOCK_MPX (write larger than negotiated buffer size request multiplexed)
- GET_E_FILE_ATTR (accommodate new OS/2 system call)
- SET_E_FILE_ATTR (accommodate new OS/2 system call)
- LOCKINGandX (accommodate new OS/2 system call)
- COPY_FILE (used when both source and target are remote)
- MOVE_FILE (used when both source and target are remote)
- IOCTL (pass IOCTL request on to server and retrieve results)
- TRANSACTION (allows bytes in/out associated with name)
- ECHO (echo sent data back)
- WRITEandCLOSE (write final bytes then close file)
- LOCKandREAD (Lock bytes then Read locked bytes)
- WRITEandUnlock (Write bytes then Unlock bytes)
-
-
- Of the LANMAN 1.0 extended protocols, only the
- SESS_SETUPandX request and the COPY_FILE SMB have extended
- features when LANMAN 1.2 protocol has been negotiated. The
- format of these SMBs, and their functionality when LANMAN
- 1.0 protocol has been negotiated is compatible with LANMAN
- 1.0 protocol but will support new features when LANMAN 1.2
- protocol is negotiated. The extended features of
- SESS_SETUPandX and COPY_FILE SMBs are detailed later in this
- document.
-
- Support of all core requests within the LANMAN 1.2 extended
- protocol is mandatory. However, the following core requests
- will no longer be generated by the OS/2 implementation of
- the redirector when LANMAN 1.0 or LANMAN 1.2 extended
- protocol has been negotiated.
-
- PROCESS EXIT
- CREATE TEMPORARY FILE
- CREATE PRINT FILE
- CLOSE PRINT FILE
- WRITE PRINT FILE
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 13 - November 29, 1989
-
-
- The only protocol format change to a core protocol service
- is that the response to the negotiate protocol (NEGOTIATE
- PROTOCOL) will contain additional fields if the LANMAN1.2
- string has been selected by the server thus effectively
- placing the session into LANMAN 1.2 extended protocol. The
- additional fields returned will be documented in detail
- later in this document.
-
- All other protocol requests within the LANMAN 1.2 extended
- protocol have a new command value from that of a similar
- function in core protocol. Thus the server need not con-
- stantly test the protocol version negotiated. The consumer
- is expected to only submit appropriate requests within the
- dialect negotiated.
-
-
- The following are the new LANMAN 1.2 extended protocol
- requests, each will be defined in detail later in this docu-
- ment.
-
-
-
- TRANSACT2
-
- FIND_CLOSE
- FIND_NOTIFY_CLOSE (close a notification handle)
- USER LOGOFF and X (logoff a user id)
-
-
-
-
-
- _4. _A_R_C_H_I_T_E_C_T_U_R_A_L _M_O_D_E_L
-
-
- The Network File Access system fundemental architecture for
- LANMAN 1.2 is unchanged from the LANMAN 1.0 architecure as
- described in the SMB File Sharing Protocol Extensions Ver-
- sion 2.0, document version 3.2.
-
-
- _5. _L_A_N_M_A_N _1._0 _S_M_B _E_X_T_E_N_S_I_O_N_S
-
-
- This section describes modifications to the LANMAN 1.0 SMB
- extensions which may be used when the LANMAN 1.2 protocol
- has been negotiated.
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 14 - November 29, 1989
-
-
- _5._1. _S_E_S_S_I_O_N _S_E_T_U_P _a_n_d _X
-
- Request Format:
-
- BYTE smb_wct; /* value = 10 */
- BYTE smb_com2; /* secondary (X) command, 0xFF = none */
- BYTE smb_reh2; /* reserved (must be zero) */
- WORD smb_off2; /* offset (from SMB hdr start) to next cmd (@smb_wct) */
- WORD smb_bufsize; /* the consumers max buffer size */
- WORD smb_mpxmax; /* actual maximum multiplexed pending requests */
- WORD smb_vc_num; /* 0 = first (only), non zero - additional VC number */
- DWORD smb_sesskey; /* Session Key (valid only if smb_vc_num != 0) */
- WORD smb_apasslen; /* size of account password (smb_apasswd) */
- WORD smb_encryptlen; /* size of encryption key (smb_encrypt) */
- WORD smb_encryptoff; /* offset (from SMB hdr start) to smb_encrypt */
- WORD smb_bcc; /* minimum value = 0 */
- BYTE smb_apasswd[*]; /* account password (* = smb_apasslen value) */
- BYTE smb_aname[]; /* account name string */
- BYTE smb_encrypt[*]; /* encryption key. (* = smb_encryptlen value) */
-
-
- Response Format:
-
- BYTE smb_wct; /* value = 3 */
- BYTE smb_com2; /* secondary (X) command, 0xFF = none */
- BYTE smb_res2; /* reserved (pad to word) */
- WORD smb_off2; /* offset (from SMB hdr start) to next cmd (@smb_wct) */
- WORD smb_action; /* request mode:
- bit0 = Logged in successfully - BUT as GUEST */
- WORD smb_bcc; /* min value = 0 */
- BYTE smb_encresp[]; /* server response to request encryption key */
-
-
- Service definition:
-
-
- This protocol function is unchanged from LANMAN 1.0 except
- that the station establishing the connection may now verify
- the validity of the server to which the request was made.
- The LANMAN 1.2 SESS_SETUPandX request uses a reserved DWORD
- field from the LANMAN 1.0 request to pass the length and
- offset of an encryption key contained in the data of the
- request to the server. The server will use the encryption
- key to format the smb_encresp field of the response proto-
- col. The station may then use this response to validate the
- server session.
-
-
- The LANMAN 1.2 SESS_SETUPandX also returns a UID in the
- smb_uid field. This is a validated UID which must be sup-
- plied by the workstation on all subsequent requests to the
- server.
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 15 - November 29, 1989
-
-
- _5._1._1. _C_O_P_Y
-
- Request Format:
-
- BYTE smb_wct; /* value = 3 */
- WORD smb_tid2; /* second (destination) path tid */
- WORD smb_ofun; /* what to do if destination file exists */
- WORD smb_flags; /* flags to control copy operations:
- bit 0 - destination must be a file.
- bit 1 - destination must be a directory.
- bit 2 - copy destination mode: 0 = binary, 1 = ASCII.
- bit 3 - copy source mode: 0 = binary, 1 = ASCII.
- bit 4 - verify all writes. */
- bit 5 - tree copy. Source must be a directory.
- Copy mode must be binary.
- When tree copy is selected smb_cct field in the
- response protocol is undefined.
- WORD smb_bcc; /* minimum value = 2 */
- BYTE smb_path[]; /* pathname of source file */
- BYTE smb_new_path[]; /* pathname of destination file */
-
- Response Format:
-
- BYTE smb_wct; /* value = 1 */
- WORD smb_cct; /* number of files copied */
- WORD smb_bcc; /* minimum value = 0 */
- BYTE smb_errfile[]; /* pathname of file where error occured - ASCIIZ */
-
- Service:
-
-
- The COPY protocol function for LANMAN 1.2 is unchanged from
- LANMAN 1.0 except that the request may now be used to
- specify a tree copy on the remote server. The tree copy mode
- is selected by setting bit 5 of the smb_flags word in the
- COPY request. When the tree copy option is selected the
- destination must not be an existing file and the source mode
- must be binary. A request with bit 5 of the smb_flags word
- set and either bit 0 or bit 3 set is therefore an error.
- When the tree copy mode is selected the smb_cct word of the
- response protocol is undefined.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 16 - November 29, 1989
-
-
- _6. _E_X_T_E_N_D_E_D _P_R_O_T_O_C_O_L
-
- The format of enhanced and new commands is defined commenc-
- ing at the smb_wct field. All messages will include the
- standard SMB header defined in section 1.0. When an error
- is encountered a server may choose to return only the header
- portion of the response (i.e., smb_wct and smb_bcc both con-
- tain zero).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 17 - November 29, 1989
-
-
- _6._0._1. _T_R_A_N_S_A_C_T_2
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = (14 + value of smb_suwcnt) */
- WORD smb_tpscnt; /* total number of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* max number of parameter bytes to return */
- WORD smb_mdrcnt; /* max number of data bytes to return */
- BYTE smb_msrcnt; /* max number of setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - if set, also disconnect TID in smb_tid
- bit 1 - if set, transaction is one way (no final response) */
- DWORD smb_timeout; /* number of milliseconds to wait for completion */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* number of parameter bytes being sent this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* set up word count */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup[*]; /* variable number of set up words (* = smb_suwcnt) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_name[1]; /* Must be a null byte */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* param bytes (* = value of smb_pscnt) */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
-
- Interim Response Format (if no error - ok send remaining
- data):
-
- BYTE smb_wct; /* value = 0 */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 18 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* total number of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* number of parameter bytes being sent this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_psdisp; /* byte displacement for these parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* file id for handle based requests, else 0xffff */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* param bytes (* = value of smb_pscnt) */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format (may respond with zero or more of these):
-
- BYTE smb_wct; /* value = 10 + value of smb_suwcnt */
- WORD smb_tprcnt; /* total number of parameter bytes being returned */
- WORD smb_tdrcnt; /* total number of data bytes being returned */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* number of parameter bytes being returned this buf */
- WORD smb_proff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_prdisp; /* byte displacement for these parameter bytes */
- WORD smb_drcnt; /* number of data bytes being returned this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* set up return word count */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_setup[*]; /* variable # of set up return words (* = smb_suwcnt) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* param bytes (* = value of smb_prcnt) */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_drcnt) */
-
-
- Service:
-
-
- The Transaction2 protocol allows transfer of parameter and
- data blocks greater than a negotiated buffer size between
- the requester and the server.
-
- The Transaction2 command scope includes (but is not limited
- to) IOCTL device requests and file system requests which
- require the transfer of an extended attribute list.
-
- The Transaction2 protocol is used to transer a request for
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 19 - November 29, 1989
-
-
- any of a set of supported functions on the server which may
- require the transfer of large data blocks. The function
- requested is identified by the first word in the transac-
- tion2 smb_setup field. Other function specific information
- may follow the function identifier in the smb_setup file id
- or in the smb_param filed. The functions supported are not
- defined by the protocol, but by consumer/server implementa-
- tions. The protocol simply provides a means of delivering
- them and retrieving the results.
-
- The number of bytes needed in order to perform the TRANSACT2
- request may be more than will fit in a single buffer.
-
- At the time of the request, the consumer knows the number of
- parameter and data bytes expected to be sent and passes this
- information to the server via the primary request
- (smb_tpscnt and smb_tdscnt). This may be reduced by lowering
- the total number of bytes expected (smb_tpscnt and/or
- smbtdscnt) in each (any) secondary request.
-
- Thus when the amount of parameter bytes received (total of
- each smb_pscnt) equals the total amount of parameter bytes
- expected (smallest smb_tpscnt) received, then the server has
- received all the parameter bytes.
-
- Likewise, when the amount of data bytes received (total of
- each smb_dscnt) equals the total amount of data bytes
- expected (smallest smb_tdscnt) received, then the server has
- received all the data bytes.
-
- The parameter bytes should normally be sent first followed
- by the data bytes. However, the server knows where each
- begins and ends in each buffer by the offset fields
- (smb_psoff and smb_dsoff) and the length fields (smb_pscnt
- and smb_dscnt). The displacement of the bytes (relative to
- start of each) is also known (smb_psdisp and smb_dsdisp).
- Thus the server is able to reasemble the parameter and data
- bytes should the "packets" (buffers) be received out of
- sequence.
-
- If all parameter bytes and data bytes fit into a single
- buffer, then no interim response is expected (and no secon-
- dary request is sent).
-
- The Consumer knows the maximum amount of data bytes and
- parameter bytes which the server may return (from smb_mprcnt
- and smb_mdrcnt of the request). Thus it initializes its
- bytes expected variables to these values. The Server then
- informs the consumer of the actual amounts being returned
- via each "packet" (buffer) of the response (smb_tprcnt and
- smb_tdrcnt).
-
- The server may reduce the expected bytes by lowering the
- total number of bytes expected (smb_tprcnt and/or
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 20 - November 29, 1989
-
-
- smb_tdrcnt) in each (any) response.
-
- Thus when the amount of parameter bytes received (total of
- each smb_prcnt) equals the total amount of parameter bytes
- expected (smallest smb_tprcnt) received, then the consumer
- has received all the parameter bytes.
-
- Likewise, when the amount of data bytes received (total of
- each smb_drcnt) equals the total amount of data bytes
- expected (smallest smb_tdrcnt) received, then the consumer
- has received all the data bytes.
-
- The parameter bytes should normally be returned first fol-
- lowed by the data bytes. However, the consumer knows where
- each begins and ends in each buffer by the offset fields
- (smb_proff and smb_droff) and the length fields (smb_prcnt
- and smb_drcnt). The displacement of the bytes (relative to
- start of each) is also known (smb_prdisp and smb_drdisp).
- Thus the consumer is able to reasemble the parameter and
- data bytes should the "packets" (buffers) be received out of
- sequence.
-
- Thus the flow is:
-
-
- 1 The consumer sends the first (primary) request which
- identifies the total bytes (both parameters and data)
- which are expected to be sent and contains the set up
- words and as many of the parameter and data bytes bytes
- as will fit in a negotiated size buffer. This request
- also identifies the maximum number of bytes (setup,
- parameters and data) the server is to return on TRAN-
- SACT2 completion. If all the bytes fit in the single
- buffer, skip to step 4.
-
-
- 2 The server responds with a single interim response
- meaning "ok, send the remainder of the bytes" or (if
- error response) terminate the transaction.
-
-
- 3 The consumer then sends another buffer full of bytes to
- the server. On each iteration of this secondary
- request, smb_tpscnt and/or smb_tdscnt could be reduced.
- This step is repeated until all bytes have been
- delivered to the server (total of all smb_pscnt equals
- smallest smb_tpscnt and total of all smb_dscnt equals
- smallest smb_tdscnt).
-
-
- 4 The Server sets up and performs the TRANSACT2 with the
- information provided.
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 21 - November 29, 1989
-
-
- 5 Upon completion of the TRANSACT2, the server sends back
- (up to) the number of parameter and data bytes
- requested (or as many as will fit in the negotiated
- buffer size). This step is repeated until all result
- bytes have been returned. On each iteration of this
- response, smb_tprcnt and/or smb_tdrcnt could be
- reduced. This step is repeated until all bytes have
- been delivered to the consumer (total of all smb_prcnt
- equals smallest smb_tprcnt and total of all smb_drcnt
- equals smallest smb_tdrcnt).
-
-
- Thus the flow is:
-
-
- 1 The consumer sends the first (primary) request which
- identifies the total bytes (parameters and data) which
- are to be sent, contains the set up words and as many
- of the parameter and data bytes as will fit in a nego-
- tiated size buffer. This request also identifies the
- maximum number of bytes (setup, parameters and data)
- the server is to return on TRANSACT2 completion. The
- parameter bytes are immediately followed by the data
- bytes (the length fields identify the break point). If
- all the bytes fit in the single buffer, skip to step 4.
-
-
- 2 The server responds with a single interim response
- meaning "ok, send the remainder of the bytes" or (if
- error response) terminate the transaction.
-
-
- 3 The consumer then sends another buffer full of bytes to
- the server. This step is repeated until all bytes have
- been delivered to the server.
-
-
- 4 The Server sets up and performs the TRANSACT2 with the
- information provided.
-
-
- 5 Upon completion of the TRANSACT2, the server sends back
- up to the the number of parameter and data bytes
- requested (or as many as will fit in the negotiated
- buffer size). This step is repeated until all bytes
- requested have been returned. On each iteration of
- this response, smb_rprcnt and smb_rdrcnt are reduced by
- the number of matching bytes returned in the previous
- response. The parameter count (smb_rprcnt) is expected
- to go to zero first because the parameters are sent
- before the data. The data count (smb_rdrcnt) may then
- continue to be counted down. Fewer than the requested
- number of bytes may be returned.
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 22 - November 29, 1989
-
-
- The flow for the TRANSACT2 protocol when the request parame-
- ters and data does NOT all fit in a single buffer is:
-
- consumer ---> TRANSACT2 request (data) >----> server
- consumer -<--< OK send remaining data -<---- server
- consumer-> TRANSACT2 secondary request 1 (data) >-> server
- consumer-> TRANSACT2 secondary request 2 (data) >-> server
- . . .
- consumer-> TRANSACT2 secondary request n (data) >-> server
- . . .
- . (server sets up and performs the TRANSACT2) .
- . . .
- consumer -<< TRANSACT2 response 1 (data) -<-- server
- consumer -<< TRANSACT2 response 2 (data) -<-- server
- . . .
- consumer -<< TRANSACT2 response n (data) -<-- server
-
- The flow for the Transaction protocol when the request
- parameters and data does all fit in a single buffer is:
-
- consumer ---> TRANSACT2 request (data) >----> server
- . . .
- . (server sets up and performs the TRANSACT2) .
- . . .
- consumer -<< TRANSACT2 response 1 (data) -<-- server
- . (only one if all data fit in buffer) .
- consumer -<< TRANSACT2 response 2 (data) -<-- server
- . . .
- consumer -<< TRANSACT2 response n (data) -<-- server
-
-
-
- Note that the primary request through the final response
- make up the complete protocol, thus the TID, PID, UID and
- MID are expected to remain constant and can be used by both
- the server and consumer to route the individual messages of
- the protocol to the correct process.
-
-
- Transaction may generate the following errors:
-
- Error Class ERRDOS:
-
- ERRnoaccess
- ERRbadaccess
-
-
- Error Class ERRSRV:
-
- ERRerror
- ERRinvnid
- ERRaccess
- ERRmoredata
- <implementation specific>
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 23 - November 29, 1989
-
-
-
- Error Class ERRHRD:
-
- <implementation specific>
-
-
-
- _6._0._1._1. _D_e_f_i_n_e_d _T_r_a_n_s_a_c_t_i_o_n_2 _P_r_o_t_o_c_o_l_s
-
- This section specifies some of the defined usages of the
- Transaction2 protocol. Each of the usages here utilize the
- basic (and flexible) transaction protocol format. This is
- NOT meant to be an exhaustive list.
-
- The following function codes are transferred in smb_setup[0]
- and are used by the server to identify the specific function
- required.
-
-
- TRANSACT2_OPEN 0
- TRANSACT2_FINDFIRST 1
- TRANSACT2_FINDNEXT 2
- TRANSACT2_QFSINFO 3
- TRANSACT2_SETFSINFO 4
- TRANSACT2_QPATHINFO 5
- TRANSACT2_SETPATHINFO 6
- TRANSACT2_QFILEINFO 7
- TRANSACT2_SETFILEINFO 8
- TRANSACT2_FSCTL 9
- TRANSACT2_IOCTL 10
- TRANSACT2_FINDNOTIFYFIRST 11
- TRANSACT2_FINDNOTIFYNEXT 12
- TRANSACT2_MKDIR 13
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 24 - November 29, 1989
-
-
- _6._0._1._1._1. _T_R_A_N_S_A_C_T_2__O_P_E_N
-
- The function code TRANSACT2_OPEN in smb_setup[0] in the pri-
- mary TRANSACT2 requests identifies a request to create a
- file with extended attributes.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total size of extended attribute list */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = 0. No data returned */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* max milliseconds to wait for resource to open */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 0 :- TRANSACT2_OPEN */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the the TRANSACT2_OPEN
- * function is the open specific information in the
- * following format. */
- WORD open_flags2;
- bit 0 - if set, return additional information
- bit 1 - if set, set single user total file lock
-
- bit 2 - if set, the server should notify the consumer
- on any action which can modify the file (delete,
- setattrib, rename, etc.). if not set, the server
- need only notify the consumer on another open
- request. */
- bit 3 - if set, return total length of EAs for the file
- WORD open_mode; /* file open mode */
- WORD open_sattr; /* search attributes */
- WORD open_attr; /* file attributes (for create) */
- DWORD open_time; /* create time */
- WORD open_ofun; /* open function */
- DWORD open_size; /* bytes to reserve on "create"
- * or "truncate" */
- WORD open_rsvd[5]; /* reserved (must be zero) */
- BYTE open_pathname[]; /* file pathname */
-
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 25 - November 29, 1989
-
-
- BYTE smb_data[*]; /* FEAList structure for the file to be openned */
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* total number of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 26 - November 29, 1989
-
-
- Response Format (one only):
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* total parameter length retuned */
- WORD smb_tdrcnt; /* value = 0 no data bytes */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes being returned */
- WORD smb_proff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for these param bytes */
- WORD smb_drcnt; /* value = 0 no data bytes */
- WORD smb_droff; /* value = 0 no data bytes */
- WORD smb_drdisp; /* value = 0 no data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the the TRANSACT2_OPEN
- * function response is the open specific return
- * information in the following format. */
- WORD open_fid; /* file handle */
- +WORD open_attribute; /* attributes of file or device */
- +DWORD open_time; /* last modification time */
- +DWORD open_size; /* current file size */
- +WORD open_access; /* access permissions actually
- * allowed */
- +WORD open_type; /* file type */
- +WORD open_state; /* state of IPC device (e.g. pipe) */
- WORD open_action; /* action taken */
- DWORD open_fileid; /* server unique file id */
- WORD open_offerror; /* offset into FEAList data of first
- * error which occured while setting
- * the extended attributes. */
- ++DWORD open_EAlength; /* Total EA length for opened file */
-
-
- +returned only if bit 0 of open_flags2 is set in primary
- request
- ++returned only if bit 3 of open_flags2 is set in primary
- request
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 27 - November 29, 1989
-
-
- _6._0._1._1._2. _T_R_A_N_S_A_C_T_2__F_I_N_D_F_I_R_S_T
-
- The function code TRANSACT2_FINDFIRST in smb_setup[0] in the
- primary TRANSACT2 request identifies a request to find the
- first file that matches the specified file specification.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total size of extended attribute list */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = maximum return data length */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0
- DWORD smb_timeout; /* value = 0. Not used for find first */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 1 :- TRANSACT2_FINDFIRST */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- TRANSACT2_FINDFIRST function is the find
- first specific information in the
- following format. */
- WORD findfirst_Attribute; /* Search attribute */
- WORD findfirst_SearchCount;
- WORD findfirst_flags; /* find flags */
- /* Bit 0: set - close search after
- * this request.
- * Bit 1: set - close search if end
- * of search reached.
- * Bit 2: set - Requester requires
- * resume key for each
- * entry found.
- */
- WORD findfirst_FileInfoLevel; /* Search level */
- DWORD findfirst_rsvd;
- BYTE findfirst_FileName[];
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent match
- * information. For a search requiring extended
- * attribute matching the data buffer contains
- * the FEAList data for the seach. */
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 28 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 29 - November 29, 1989
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 10 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_FINDFIRST function response is
- * the find first specific return
- * information in the following format. */
- WORD findfirst_dir_handle; /* Directory search handle */
- WORD findfirst_searchcount; /* Number of matching
- * entries found */
- WORD findfirst_eos; /* end of search indicator. */
- WORD findfirst_offerror; /* error offset if EA error */
- WORD findfirst_lastname; /* 0 - server does not require
- * findnext_FileName[] in order
- * to continue search.
- * else
- * offset from start of returned
- * data to filename of last
- * found entry returned.
- */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the matches found in the search.
- *
- * If bit 2 in the findfirst_flags is set, each
- * returned file descriptor block will be preceeded
- * by a four byte resume key.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 30 - November 29, 1989
-
-
- Subsequent Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 8 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the matches found in the search.
- *
- * If bit 2 in the findfirst_flags is set, each
- * returned file descriptor block will be preceeded
- * by a four byte resume key.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 31 - November 29, 1989
-
-
- _6._0._1._1._3. _T_R_A_N_S_A_C_T_2__F_I_N_D_N_E_X_T
-
- The function code TRANSACT2_FINDNEXT in smb_setup[0] in the
- primary TRANSACT2 request identifies a request to continue a
- file search started by a TRANSACT_FINDFIRST search.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* total param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = maximum return data length */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for find next */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 2 :- TRANSACT2_FINDNEXT */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the TRANSACT2_FINDNEXT
- * function is the find next specific information
- * in the following format. */
- WORD findnext_DirHandle; /* Directory search handle */
- WORD findnext_SearchCount; /* Number of entries to find */
- WORD findnext_FileInfoLevel; /* Search level */
- DWORD findnext_ResumeKey; /* Server reserved resume key */
- WORD findnext_flags; /* find flags */
- /* Bit 0: set - close search after
- * this request.
- * Bit 1: set - close search if end
- * of search reached.
- * Bit 2: set - Requester requires
- * resume key for each
- * entry found.
- * Bit 3: set - Continue search from
- * last entry returned.
- * clr - Rewind search. */
- BYTE findnext_FileName[]; /* Name of file to resume search from */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent match
- * information. For a search requiring extended
- * attribute matching the data buffer contains
- * the FEAList data for the seach.
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 32 - November 29, 1989
-
-
- */
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* total parmeter bytes sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* search handle returned from find first */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 33 - November 29, 1989
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 6 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the TRANSACT2_FINDNEXT
- * function response is the find next specific return
- * information in the following format. */
- WORD findnext_searchcount; /* Number of matching
- * entries found */
- WORD findnext_eos; /* end of search indicator. */
- WORD findnext_offerror; /* error offset if EA error */
- WORD findfirst_lastname; /* 0 - server does not require
- * findnext_FileName[] in order
- * to continue search.
- * else
- * offset from start of returned
- * data to filename of last
- * found entry returned.
- */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the matches found in the search.
- *
- * If bit 2 in the findfirst_flags is set, each
- * returned file descriptor block will be preceeded
- * by a four byte resume key.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 34 - November 29, 1989
-
-
- Subsequent Response Format :
-
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 6 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the matches found in the search.
- *
- * If bit 2 in the findfirst_flags is set, each
- * returned file descriptor block will be preceeded
- * by a four byte resume key.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 35 - November 29, 1989
-
-
- _6._0._1._1._4. _T_R_A_N_S_A_C_T_2__Q_F_S_I_N_F_O
-
- The function code TRANSACT2_QFSINFO in smb_setup[0] in the
- primary TRANSACT2 requests identifies a request to query
- information about a file system.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = 2, total parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* maximum data length to return */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for qfsinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = 2, params are in primary request */
- WORD smb_psoff; /* offset (from start of SMB Hdr to parameter bytes */
- WORD smb_dscnt; /* value = 0, no data sent with qfsinfo */
- WORD smb_dsoff; /* value = 0, no data sent with qfsinfo */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 3 :- TRANSACT2_QFSINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_QFSINFO function is
- * the qfsinfo specific information
- * in the following format. */
- WORD qfsinfo_FSInfoLevel; /* Level of information required */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 36 - November 29, 1989
-
-
- Response Format (One or more of these) :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 0 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0, no return param bytes for QFSINFO */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the file system.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 37 - November 29, 1989
-
-
- _6._0._1._1._5. _T_R_A_N_S_A_C_T_2__S_E_T_F_S_I_N_F_O
-
- The function code TRANSACT2_SETFSINFO in smb_setup[0] in the
- primary TRANSACT2 requests identifies a request to set
- information for a file system device.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = 2,total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = 0. No data returned */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for setfsinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = 4, all params are in primary request */
- WORD smb_psoff; /* offset (from start of SMB Hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 4 :- TRANSACT2_SETFSINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_SETFSINFO function is
- * the setfsinfo specific information
- * in the following format. */
- WORD setfsinfo_FSInfoLevel; /* Level of information
- * provided */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Level dependent file system information */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 38 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format (one only):
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 0 */
- WORD smb_tdrcnt; /* value = 0 no data bytes */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 no return parameters for setfsinfo */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* value = 0 no data bytes */
- WORD smb_droff; /* value = 0 no data bytes */
- WORD smb_drdisp; /* value = 0 no data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 39 - November 29, 1989
-
-
- _6._0._1._1._6. _T_R_A_N_S_A_C_T_2__Q_P_A_T_H_I_N_F_O
-
- The function code TRANSACT2_QPATHINFO in smb_setup[0] in the
- primary TRANSACT2 requests identifies a request to query
- information about specific file or subdirectory.
-
- Primary Request Format:
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* maximum data length to return */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for qpathinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, all params are in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 5 :- TRANSACT2_QPATHINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_QPATHINFO function is the
- * qpathinfo specific information
- * in the following format. */
- WORD qpathinfo_PathInfoLevel; /* Info level required. */
- DWORD qpathinfo_rsvd; /* Reserved.
- * Must be zero. */
- BYTE qpathinfo_PathName[]; /* File/directory name. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent information */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 40 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 2 param bytes returned for QFSINFO */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_QPATHINFO response is
- * the qpathinfo specific return
- * information in the following format. */
- WORD qpathinfo_offerror; /* error offset if EA error */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the requested level
- * dependent information about the path.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 41 - November 29, 1989
-
-
- Subsequent Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the requested level
- * dependent information about the path.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 42 - November 29, 1989
-
-
- _6._0._1._1._7. _T_R_A_N_S_A_C_T_2__S_E_T_P_A_T_H_I_N_F_O
-
- The function code TRANSACT2_SETPATHINFO in smb_setup[0] in
- the primary TRANSACT2 requests identifies a request to set
- information for a file or directory.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = 0. No data returned */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for setpathinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, params are in primary request */
- WORD smb_psoff; /* offset (from start of SMB Hdr to param bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 6 :- TRANSACT2_SETPATHINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_SETPATHINFO function is
- * the setpathinfo specific information
- * in the following format. */
- WORD setpathinfo_PathInfoLevel; /* Info level supplied. */
- DWORD setpathinfo_rsvd; /* Reserved.
- * Must be zero. */
- BYTE setpathinfo_pathname[]; /* path name to set
- * information on */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent information. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 43 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format (one only):
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = 0 no data bytes */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 2 parameter bytes being returned */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* value = 0 no data bytes */
- WORD smb_droff; /* value = 0 no data bytes */
- WORD smb_drdisp; /* value = 0 no data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_SETPATHINFO function
- * response is the setpathinfo
- * specific return information in
- * the following format. */
- WORD setpathinfo_offerror; /* offset into FEAList data
- * of first error which
- * occured while setting
- * the extended attributes. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 44 - November 29, 1989
-
-
- _6._0._1._1._8. _T_R_A_N_S_A_C_T_2__Q_F_I_L_E_I_N_F_O
-
- The function code TRANSACT2_QFILEINFO in smb_setup[0] in the
- primary TRANSACT2 requests identifies a request to query
- information about specific file.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = 4,total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* maximum data length to return */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for qfileinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = 4, all params are in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 7 :- TRANSACT2_QFILEINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_QFILEINFO function
- * is the qfileinfo specific information
- * in the following format. */
- WORD qfileinfo_FileHandle; /* File handle. */
- WORD qfileinfo_FileInfoLevel; /* Info level required. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent information. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 45 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* file handle */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 2 no param bytes returned for qfileinfo */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_QFILEINFO response is
- * the qfileinfo specific return
- * information in the following format. */
- WORD qfileinfo_offerror; /* error offset if EA error */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the requested level
- * dependent information about the file. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 46 - November 29, 1989
-
-
- Subsequent Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the requested level
- * dependent information about the file. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 47 - November 29, 1989
-
-
- _6._0._1._1._9. _T_R_A_N_S_A_C_T_2__S_E_T_F_I_L_E_I_N_F_O
-
- The function code TRANSACT2_SETFILEINFO in smb_setup[0] in
- the primary TRANSACT2 requests identifies a request to set
- information for a specific file.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = 6, total param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = 0. No data returned */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for setfileinfo */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = 6, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB Hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 8 :- TRANSACT2_SETFILEINFO */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_SETFILEINFO function is
- * the setfileinfo specific information
- * in the following format. */
- WORD setfileinfo_FileHandle; /* File handle. */
- WORD setfileinfo_FileInfoLevel; /* Info level supplied. */
- WORD setfileinfo_IOFlag; /* Flag
- * 0x0010 - Write through
- * 0x0020 - No cache */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional FileInfoLevel dependent information.
- /* For level = 2, smb_data[] contains the FEAList
- * structure to set for this file. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 48 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* value = 4 */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* file handle */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format (one only):
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = 0 no data bytes */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 2 parameter bytes being returned */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0, byte displacement for these params */
- WORD smb_drcnt; /* value = 0 no data bytes */
- WORD smb_droff; /* value = 0 no data bytes */
- WORD smb_drdisp; /* value = 0 no data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_SETFILEINFO function
- * response is the setfileinfo specific
- * return information in the
- * following format. */
- WORD setfileinfo_offerror; /* offset into FEAList
- * data of first error
- * which occured while
- * setting the extended
- * attributes. */
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 49 - November 29, 1989
-
-
- _6._0._1._1._1_0. _T_R_A_N_S_A_C_T_2__F_S_C_T_L
-
- The function code TRANSACT2_FSCTL in smb_setup[0] in the
- primary TRANSACT2 requests identifies a file system control
- request.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 14 + value of smb_suwcnt */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* maximum data length to return */
- BYTE smb_msrcnt; /* value = 1. Function return code */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for fsctl */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* number of param bytes being sent in this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = number of setup words in this buffer */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup[]; /* The setup word array for the
- * TRANSACT2_FSINFO function is the
- * fsctl specific information
- * in the following format. */
- WORD 9 :- TRANSACT2_FSCTL; /* TRANS2 command code. */
- WORD fsctl_FileHandle; /* File handle. */
- WORD fsctl_Function code; /* FsCtl function code */
- WORD fsctl_RouteMethod; /* Method for routing. */
- BYTE fsctl_RouteName[]; /* The route name byte
- * array is zero padded
- * to an even length. */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* File system specific parameter block. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* File system specific data block. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 50 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* number of parameter bytes being sent this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_psdisp; /* byte displacement for these parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* file handle */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* File system specific parameter block. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = total length of return parameter buffer */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for these param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0, no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* File system specific return parameter block */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* File system specific return data block. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 51 - November 29, 1989
-
-
- _6._0._1._1._1_1. _T_R_A_N_S_A_C_T_2__I_O_C_T_L
-
- The function code TRANSACT2_IOCTL in smb_setup[0] in the
- primary TRANSACT2 requests identifies a device control
- request.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 18 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* maximum data length to return */
- BYTE smb_msrcnt; /* value = 1. Function return code */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for fsctl */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* number of param bytes being sent in this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = number of setup words in this buffer */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup[]; /* The setup word array for the
- * TRANSACT2_IOCTL function is the ioctl
- * functiom specific information
- * in the following format. */
- WORD 10 :- TRANSACT2_IOCTL; /* Function code. */
- WORD ioctl_DevHandle; /* Device handle. */
- WORD ioctl_Category; /* Device catgory. */
- WORD ioctl_Function; /* Device function. */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* Device/function specific parameter block. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Device/function specific data block. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 52 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* number of parameter bytes being sent this buffer */
- WORD smb_psoff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_psdisp; /* byte displacement for these parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* file handle */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* Device/function specific parameter block. */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = total length of return parameter buffer */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to parameter bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for these param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0, no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* Device/function specific return parameter block */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Device/function specific return data block. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 53 - November 29, 1989
-
-
- _6._0._1._1._1_2. _T_R_A_N_S_A_C_T_2__F_I_N_D_N_O_T_I_F_Y_F_I_R_S_T
-
- The function code TRANSACT2_FINDNOTIFYFIRST in smb_setup[0]
- in the primary TRANSACT2 request identifies a request to
- commence monitoring changes to a specific file or directory.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total size of extended attribute list */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = maximum return data length */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0
- DWORD smb_timeout; /* Specifies duration to wait for changes */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 11 :- TRANSACT2_FINDNOTIFYFIRST */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- TRANSACT2_FINDNOTIFYFIRST function is the find
- first specific information in the
- following format. */
- WORD findnfirst_Attribute; /* Search attribute */
- WORD findnfirst_ChangeCount; /* Number of changes
- * to wait for */
- WORD findnfirst_Level; /* Info level required */
- DWORD findfirst_rsvd; /* Reserved (must be zero) */
- BYTE findnfirst_PathSpec[];
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional level dependent match data */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 54 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 6 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_FINDNOTIFYFIRST function response is
- * the find first specific return
- * information in the following format. */
- WORD findnfirst_handle; /* Mointor handle */
- WORD findnfirst_changecount; /* Number of changes which
- * occured within timeout */
- WORD findnfirst_offerror; /* error offset if EA error */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the changes which occurred
- */
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 55 - November 29, 1989
-
-
- Subsequent Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 6 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the changes which occurred
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 56 - November 29, 1989
-
-
- _6._0._1._1._1_3. _T_R_A_N_S_A_C_T_2__F_I_N_D_N_O_T_I_F_Y_N_E_X_T
-
-
-
- The function code TRANSACT2_FINDNOTIFYNEXT in smb_setup[0]
- in the primary TRANSACT2 request identifies a request to
- continue monitoring changes to a file or directory specified
- by a TRANSACT_FINDNOTIFYFIRST request.
-
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = 4, total param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = maximum return data length */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- bit 0 - 0
- bit 1 - 0 */
- DWORD smb_timeout; /* Duration of monitor period */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 12 :- TRANSACT2_FINDNOTIFYNEXT */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_FINDNOTIFYNEXT function
- * is the find next specific information
- * in the following format. */
- WORD findnnext_DirHandle; /* Directory monitor handle */
- WORD findnnext_ChangeCount; /* Number of changes to wait for */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* Additional level dependent monitor
- * information.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 57 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* value = 4 total parmeter bytes sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* search handle */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- First Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 4 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* parameter bytes returned in this buffer */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_FINDNOTIFYNEXT function
- * response is the find notify next specific return
- * information in the following format. */
- WORD findnnext_changecount; /* Number of changes which
- * during the monitor period. */
- WORD findnnext_offerror;
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the changes which occurred.
- */
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 58 - November 29, 1989
-
-
- Subsequent Response Format :
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 4 */
- WORD smb_tdrcnt; /* value = total length of return data buffer */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 0 */
- WORD smb_proff; /* value = 0 */
- WORD smb_prdisp; /* value = 0 */
- WORD smb_drcnt; /* data bytes returned in this buffer */
- WORD smb_droff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_drdisp; /* byte displacement for these data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* return data bytes (* = value of smb_dscnt) */
- /* The data block contains the level dependent
- * information about the changes which occurred.
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 59 - November 29, 1989
-
-
- _6._0._1._1._1_4. _T_R_A_N_S_A_C_T_2__M_K_D_I_R
-
- The function code TRANSACT2_MKDIR in smb_setup[0] in the
- primary TRANSACT2 requests identifies a request to create a
- directory with extended attributes.
-
- Primary Request Format:
-
-
- BYTE smb_wct; /* value = 15 */
- WORD smb_tpscnt; /* value = total number of param bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_mprcnt; /* value = maximum return parameter length */
- WORD smb_mdrcnt; /* value = 0. No data returned */
- BYTE smb_msrcnt; /* value = 0. No setup words to return */
- BYTE smb_rsvd; /* reserved (pad above to word) */
- WORD smb_flags; /* additional information:
- * bit 0 - 0
- * bit 1 - 0 */
- DWORD smb_timeout; /* value = 0. Not used for mkdir */
- WORD smb_rsvd1; /* reserved */
- WORD smb_pscnt; /* value = tpscnt, parms must be in primary request */
- WORD smb_psoff; /* offset (from start of SMB Hdr to parameter bytes */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- BYTE smb_suwcnt; /* value = 1 */
- BYTE smb_rsvd2; /* reserved (pad above to word) */
- WORD smb_setup1; /* value = 13 :- TRANSACT2_MKDIR */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_MKDIR function is
- * the mkdir specific information
- * in the following format. */
- DWORD mkdir_rsvd; /* Reserved. Must be zero. */
- BYTE mkdir_dirname[]; /* Directory name */
- BYTE smb_pad1[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* FEAList structure for the directory
- * to be created */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 60 - November 29, 1989
-
-
- Secondary Request Format (more data - may be zero or more of
- these):
-
- BYTE smb_wct; /* value = 9 */
- WORD smb_tpscnt; /* totalnumber of parameter bytes being sent */
- WORD smb_tdscnt; /* total number of data bytes being sent */
- WORD smb_pscnt; /* value = 0. All params in primary request */
- WORD smb_psoff; /* value = 0. No parameters in secondary request. */
- WORD smb_psdisp; /* value = 0. No parameters in secondary request. */
- WORD smb_dscnt; /* number of data bytes being sent this buffer */
- WORD smb_dsoff; /* offset (from start of SMB hdr) to data bytes */
- WORD smb_dsdisp; /* byte displacement for these data bytes */
- WORD smb_fid; /* value = 0xffff, no handle on request */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_data[*]; /* data bytes (* = value of smb_dscnt) */
-
-
- Response Format (one only):
-
- BYTE smb_wct; /* value = 10 */
- WORD smb_tprcnt; /* value = 2 */
- WORD smb_tdrcnt; /* value = 0 no data bytes */
- WORD smb_rsvd; /* reserved */
- WORD smb_prcnt; /* value = 2, parameter bytes being returned */
- WORD smb_proff; /* offset (from start of SMB hdr) to param bytes */
- WORD smb_prdisp; /* value = 0 byte displacement for param bytes */
- WORD smb_drcnt; /* value = 0 no data bytes */
- WORD smb_droff; /* value = 0 no data bytes */
- WORD smb_drdisp; /* value = 0 no data bytes */
- BYTE smb_suwcnt; /* value = 0 no set up return words */
- BYTE smb_rsvd1; /* reserved (pad above to word) */
- WORD smb_bcc; /* total bytes (including pad bytes) following */
- BYTE smb_pad[]; /* (optional) to pad to word or dword boundary */
- BYTE smb_param[*]; /* The parmater block for the
- * TRANSACT2_MKDIR function response
- * is the mkdir specific return
- * information in the following format. */
- WORD mkdir_offerror; /* offset into FEAList data of first
- * error which occured while setting
- * the extended attributes. */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 61 - November 29, 1989
-
-
- _6._0._2. _F_I_N_D _N_O_T_I_F_Y _C_L_O_S_E
-
- Request Format:
-
- BYTE smb_wct; /* value = 1 */
- WORD smb_handle; /* Find notify handle */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
- Response Format:
-
- BYTE smb_wct; /* value = 0 */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
- Service:
-
- The Find Notify Close protocol closes the association
- between a directory handle returned following a resourse
- monitor established using a TRANSACT2_FINDNOTIFYFIRST
- request to the server and the resulting system directory
- monitor. This request allows the server to free any
- resources held in support of the open handle.
-
- The Find Close protocol is used to match the DosFindNotify-
- Close OS/2 system call.
-
-
-
- Find Notify Close may generate the following errors.
-
- Error Class ERRDOS
-
- ERRbadfid
- <implementation specific>
-
-
- Error Class ERRSRV
-
- ERRerror
- ERRinvnid
- <implementation specific>
-
-
- Error Class ERRHRD
-
- <implementation specific>
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 62 - November 29, 1989
-
-
- _6._0._3. _F_I_N_D _C_L_O_S_E
-
- Request Format:
-
- BYTE smb_wct; /* value = 1 */
- WORD smb_handle; /* Find handle */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
- Response Format:
-
- BYTE smb_wct; /* value = 0 */
- WORD smb_bcc; /* value = 0 */
-
-
-
-
- Service:
-
- The Find Close protocol closes the association between a
- search handle returned following a successful FIND FIRST
- request sent to the server using the TRANSACT2 protocol and
- the resulting system file search. This request allows the
- server to free any resources held in support of the open
- handle.
-
- The Find Close protocol is used to match the DosFindFirst2
- OS/2 system call.
-
-
-
- Find Close may generate the following errors.
-
- Error Class ERRDOS
-
- ERRbadfid
- <implementation specific>
-
-
- Error Class ERRSRV
-
- ERRerror
- ERRinvnid
- <implementation specific>
-
-
- Error Class ERRHRD
-
- <implementation specific>
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 63 - November 29, 1989
-
-
- _6._0._4. _U_S_E_R _L_O_G_O_F_F _a_n_d _X
-
- Request Format:
-
- BYTE smb_wct; /* value = 2 */
- BYTE smb_com2; /* secondary (X) command, 0xFF = none */
- BYTE smb_reh2; /* reserved (must be zero) */
- WORD smb_off2; /* offset (from SMB hdr start) to next cmd (@smb_wct) */
- WORD smb_bcc; /* value = 0 */
-
-
-
- Response Format:
-
- BYTE smb_wct; /* value = 2 */
- BYTE smb_com2; /* secondary (X) command, 0xFF = none */
- BYTE smb_res2; /* reserved (pad to word) */
- WORD smb_off2; /* offset (from SMB hdr start) to next cmd (@smb_wct) */
- WORD smb_bcc; /* value = 0 */
-
-
-
- Service definition:
-
- This protocol is used to "Log Off" the user (identified by
- the UID value in smb_uid) previously "Logged On" via the
- Session Set Up protocol.
-
- The server will remove this UID from its list of valid UIDs
- for this session. Any subsequent protocol containing this
- UID (in smb_uid) received (on this session) will be returned
- with an access error.
-
- Another Session Set Up ("User Logon") must be sent in order
- to reenstate the user on the session.
-
- Session Termination also causes the UIDs registered on the
- session to be invalidated. When the session is reesta-
- blished, Session Setup request(s) must again be used to
- validate each user.
-
- The following are the only valid protocol request commands
- for smb_com2 (X) for User Logoff and X:
-
-
- SESSION SET UP and X
-
-
- User Logoff may generate the following errors.
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 64 - November 29, 1989
-
-
-
- Error Class ERRDOS
-
- <implementation specific>
-
- Error Class ERRSRV
-
- <implementation specific>
-
- Error Class ERRHRD
-
- <implementation specific>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 65 - November 29, 1989
-
-
- _7. _D_A_T_A _D_E_F_I_N_I_T_I_O_N_S
-
- _7._1. _C_O_M_M_A_N_D _C_O_D_E_S
-
- The command codes are unchanged for commands that are common
- with the Core File Sharing Protocol.
-
- The following values have been assigned for the "core" pro-
- tocol commands.
-
- #define SMBmkdir 0x00 /* create directory */
- #define SMBrmdir 0x01 /* delete directory */
- #define SMBopen 0x02 /* open file */
- #define SMBcreate 0x03 /* create file */
- #define SMBclose 0x04 /* close file */
- #define SMBflush 0x05 /* flush file */
- #define SMBunlink 0x06 /* delete file */
- #define SMBmv 0x07 /* rename file */
- #define SMBgetatr 0x08 /* get file attributes */
- #define SMBsetatr 0x09 /* set file attributes */
- #define SMBread 0x0A /* read from file */
- #define SMBwrite 0x0B /* write to file */
- #define SMBlock 0x0C /* lock byte range */
- #define SMBunlock 0x0D /* unlock byte range */
- #define SMBctemp 0x0E /* create temporary file */
- #define SMBmknew 0x0F /* make new file */
- #define SMBchkpth 0x10 /* check directory path */
- #define SMBexit 0x11 /* process exit */
- #define SMBlseek 0x12 /* seek */
- #define SMBtcon 0x70 /* tree connect */
- #define SMBtdis 0x71 /* tree disconnect */
- #define SMBnegprot 0x72 /* negotiate protocol */
- #define SMBdskattr 0x80 /* get disk attributes */
- #define SMBsearch 0x81 /* search directory */
- #define SMBsplopen 0xC0 /* open print spool file */
- #define SMBsplwr 0xC1 /* write to print spool file */
- #define SMBsplclose 0xC2 /* close print spool file */
- #define SMBsplretq 0xC3 /* return print queue */
- #define SMBsends 0xD0 /* send single block message */
- #define SMBsendb 0xD1 /* send broadcast message */
- #define SMBfwdname 0xD2 /* forward user name */
- #define SMBcancelf 0xD3 /* cancel forward */
- #define SMBgetmac 0xD4 /* get machine name */
- #define SMBsendstrt 0xD5 /* send start of multi-block message */
- #define SMBsendend 0xD6 /* send end of multi-block message */
- #define SMBsendtxt 0xD7 /* send text of multi-block message */
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 66 - November 29, 1989
-
-
- The commands added by the LANMAN 1.0 Extended File Sharing
- Protocol have the following command codes:
-
- #define SMBlockread 0x13 /* lock then read data */
- #define SMBwriteunlock 0x14 /* write then unlock data */
- #define SMBreadBraw 0x1A /* read block raw */
- #define SMBreadBmpx 0x1B /* read block multiplexed */
- #define SMBreadBs 0x1C /* read block (secondary response) */
- #define SMBwriteBraw 0x1D /* write block raw */
- #define SMBwriteBmpx 0x1E /* write block multiplexed */
- #define SMBwriteBs 0x1F /* write block (secondary request) */
- #define SMBwriteC 0x20 /* write complete response */
- #define SMBsetattrE 0x22 /* set file attributes expanded */
- #define SMBgetattrE 0x23 /* get file attributes expanded */
- #define SMBlockingX 0x24 /* lock/unlock byte ranges and X */
- #define SMBtrans 0x25 /* transaction - name, bytes in/out */
- #define SMBtranss 0x26 /* transaction (secondary request/response) */
- #define SMBioctl 0x27 /* IOCTL */
- #define SMBioctls 0x28 /* IOCTL (secondary request/response) */
- #define SMBcopy 0x29 /* copy */
- #define SMBmove 0x2A /* move */
- #define SMBecho 0x2B /* echo */
- #define SMBwriteclose 0x2C /* Write and Close */
- #define SMBopenX 0x2D /* open and X */
- #define SMBreadX 0x2E /* read and X */
- #define SMBwriteX 0x2F /* write and X */
- #define SMBsesssetup 0x73 /* Session Set Up & X (including User Logon) */
- #define SMBtconX 0x75 /* tree connect and X */
- #define SMBffirst 0x82 /* find first */
- #define SMBfunique 0x83 /* find unique */
- #define SMBfclose 0x84 /* find close */
- #define SMBinvalid 0xFE /* invalid command */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 67 - November 29, 1989
-
-
- The commands added by the LANMAN 1.2 Extended File Sharing
- Protocol have the following command codes:
-
- #define SMBtrans2 0x32 /* transaction2 - function, byte in/out */
- #define SMBtranss2 0x33 /* transaction2 (secondary request/response*/
- #define SMBfindclose 0x34 /* find close */
- #define SMBfindnclose 0x35 /* find notify close */
- #define SMBuloggoffX 0x74 /* User logoff and X */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 68 - November 29, 1989
-
-
- _7._2. _E_R_R_O_R _C_L_A_S_S_E_S _A_N_D _C_O_D_E_S
-
- The error class and code lists in the section include all
- classes and codes generated by the Core File Sharing Proto-
- col. Errors listed here are intended to provide a finer
- granularity of error conditions. These lists are not com-
- plete.
-
- The following error classes may be returned by the protocol
- elements defined in this document.
-
- SUCCESS 0 The request was successful.
- ERRDOS 0x01 Error is from the core DOS operating system set.
- ERRSRV 0x02 Error is generated by the server network file manager.
- ERRHRD 0x03 Error is an hardware error.
- ERRXOS 0x04 Reserved for XENIX.
- ERRRMX1 0xE1 Reserved for iRMX
- ERRRMX2 0xE2 Reserved for iRMX
- ERRRMX3 0xE3 Reserved for iRMX
- ERRCMD 0xFF Command was not in the "SMB" format.
-
-
- The following error codes may be generated with the SUCCESS
- error class.
-
- SUCCESS 0 The request was successful.
-
-
- The following error codes may be generated with the ERRDOS
- error class. The XENIX errors equivalent to each of these
- errors are noted at the end of the error description. NOTE
- - When the extended protocol (LANMAN 1.0) has been nego-
- tiated, all of the error codes below may be generated plus
- any of the new error codes defined for OS/2 (see OS/2
- operating system documentation for complete list of OS/2
- error codes). When only "core" protocol has been nego-
- tiated, the server must map additional OS/2 (or OS/2 like)
- errors to the errors listed below.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 69 - November 29, 1989
-
-
- The following error codes may be generated with the ERRDOS
- error class.
-
- ERRbadfunc 1
- Invalid function. The server OS did not recognize or could not perform
- a system call generated by the server, e.g., set the DIRECTORY attribute
- on a data file, invalid seek mode. [EINVAL]
- ERRbadfile 2
- File not found. The last component of a file's pathname could not be
- found.
- ERRbadpath 3
- Directory invalid. A directory component in a pathname could not be
- found. [ENOENT]
- ERRnofids 4
- Too many open files. The server has no file handles (FIDs) available.
- [EMFILE]
- ERRnoaccess 5
- Access denied, the requester's context does not permit the requested
- function. This includes the following conditions. [EPERM]
- invalid rename command
- write to fid open for read only
- read on fid open for write only
- Attempt to delete a non-empty directory
- ERRbadfid 6
- Invalid file handle. The file handle specified was not recognized by
- the server. [EBADF]
- ERRbadmcb 7 Memory control blocks destroyed. [EREMOTEIO]
- ERRnomem 8 Insufficient server memory to perform the requested function. [ENOMEM]
- ERRbadmem 9 Invalid memory block address. [EFAULT]
- ERRbadenv 10 Invalid environment. [EREMOTEIO]
- ERRbadformat 11 Invalid format. [EREMOTEIO]
- ERRbadaccess 12 Invalid open mode.
- ERRbaddata 13 Invalid data (generated only by IOCTL calls within the server). [E2BIG]
- ERR 14 reserved
- ERRbaddrive 15 Invalid drive specified. [ENXIO]
- ERRremcd 16
- A Delete Directory request attempted to remove the server's current
- directory. [EREMOTEIO]
- ERRdiffdevice 17 Not same device (e.g., a cross volume rename was attempted) [EXDEV]
- ERRnofiles 18
- A File Search command can find no more files matching the specified cri-
- teria.
- ERRbadshare 32
- The sharing mode specified for an Open conflicts with existing FIDs on
- the file. [ETXTBSY]
- ERRlock 33
- A Lock request conflicted with an existing lock or specified an invalid
- mode, or an Unlock requested attempted to remove a lock held by another
- process. [EDEADLOCK]
- ERRfilexists 80
- The file named in a Create Directory, Make New File or Link request
- already exists. The error may also be generated in the Create and Rename
- transaction. [EEXIST]
-
- ERRbadpipe 230 Pipe invalid.
- ERRpipebusy 231 All instances of the requested pipe are busy.
- ERRpipeclosing 232 Pipe close in progress.
- ERRnotconnected 233 No process on other end of pipe.
- ERRmoredata 234 There is more data to be returned.
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 70 - November 29, 1989
-
-
- The following error codes may be generated with the ERRSRV
- error class.
-
- ERRerror 1 Non-specific error code. It is returned under the following conditions:
- resource other than disk space exhausted (e.g. TIDs)
- first command on VC was not negotiate
- multiple negotiates attempted
- internal server error [ENFILE]
- ERRbadpw 2
- Bad password - name/password pair in a Tree Connect or Session Setup are
- invalid.
- ERRbadtype 3 reserved
- ERRaccess 4
- The requester does not have the necessary access rights within the
- specified context for the requested function. The context is defined by
- the TID or the UID. [EACCES]
- ERRinvnid 5 The tree ID (TID) specified in a command was invalid.
- ERRinvnetname 6 Invalid network name in tree connect.
- ERRinvdevice 7
- Invalid device - printer request made to non-printer connection or non-
- printer request made to printer connection.
- ERRqfull 49 Print queue full (files) -- returned by open print file.
- ERRqtoobig 50 Print queue full -- no space.
- ERRqeof 51 EOF on print queue dump.
- ERRinvpfid 52 Invalid print file FID.
- ERRsmbcmd 64 The server did not recognize the command received.
- ERRsrverror 65
- The server encountered an internal error, e.g., system file unavailable.
- ERRfilespecs 67
- The file handle (FID) and pathname parameters contained an invalid com-
- bination of values.
- ERRreserved 68 reserved.
- ERRbadpermits 69
- The access permissions specified for a file or directory are not a valid
- combination. The server cannot set the requested attribute.
- ERRreserved 70 reserved.
- ERRsetattrmode 71 The attribute mode in the Set File Attribute request is invalid.
- ERRpaused 81 Server is paused. (reserved for messaging)
- ERRmsgoff 82 Not receiving messages. (reserved for messaging).
- ERRnoroom 83 No room to buffer message. (reserved for messaging).
- ERRrmuns 87 Too many remote user names. (reserved for messaging).
- ERRtimeout 88 Operation timed out.
- ERRnoresource 89 No resources currently available for request.
- ERRtoomanyuids 90 Too many UIDs active on this session.
- ERRbaduid 91 The UID is not known as a valid ID on this session.
-
- ERRusempx 250 Temp unable to support Raw, use MPX mode.
- ERRusestd 251 Temp unable to support Raw, use standard read/write.
- ERRcontmpx 252 (reserved) continue in MPX mode.
- ERRreserved 253 reserved.
- ERRreserved 254 reserved.
-
- ERRnosupport 0xFFFF Function not supported.
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-
-
-
- SMB Protocol Extensions - 71 - November 29, 1989
-
-
- The following error codes may be generated with the ERRHRD
- error class. The XENIX errors equivalent to each of these
- errors are noted at the end of the error description.
-
- ERRnowrite 19 Attempt to write on write-protected diskette. [EROFS]
- ERRbadunit 20 Unknown unit. [ENODEV]
- ERRnotready 21 Drive not ready. [EUCLEAN]
- ERRbadcmd 22 Unknown command.
- ERRdata 23 Data error (CRC). [EIO]
- ERRbadreq 24 Bad request structure length. [ERANGE]
- ERRseek 25 Seek error.
- ERRbadmedia 26 Unknown media type.
- ERRbadsector 27 Sector not found.
- ERRnopaper 28 Printer out of paper.
- ERRwrite 29 Write fault.
- ERRread 30 Read fault.
- ERRgeneral 31 General failure.
- ERRbadshare 32 A open conflicts with an existing open. [ETXTBSY]
- ERRlock 33
- A Lock request conflicted with an existing lock or
- specified an invalid mode, or an Unlock requested
- attempted to remove a lock held by another process.
- [EDEADLOCK]
- ERRwrongdisk 34
- The wrong disk was found in a drive.
- ERRFCBUnavail 35
- No FCBs are available to process request.
- ERRsharebufexc 36
- A sharing buffer has been exceeded.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright Microsoft Corporation, 1987, 1988, 1989Microsoft Networks
-
-
-